package com.study.controller;

import com.study.pojo.Headline;
import com.study.pojo.vo.PortalVo;
import com.study.service.HeadlineService;
import com.study.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * description:头条内容的控制层
 */
@RestController
@RequestMapping("headline")
@CrossOrigin
public class HeadLineController {
    @Autowired
    private HeadlineService headlineService;

    /**
     * 发布头条
     * 因为发布头条中有发布用户，所以需要用token获取用户id，来找到发布者信息
     * 注意：该类方法都是再登录后才有效，因此需要在拦截器中判断token是否为空，为空则返回未登录
     *        因此设计一个拦截器来完成该检查
     * @param headline
     * @param token
     * @return
     */
    @PostMapping("publish")
    public Result publish(@RequestBody Headline headline, @RequestHeader String token) {
        Result result=headlineService.publish(headline, token);
        return result;
    }

    /**
     * 头条内容回显，根据hid查询，不需要在service层中查询，不涉及业务逻辑
     * @param hid
     * @return
     */
    @PostMapping("findHeadlineByHid")
    public Result findHeadlineByHid(Integer hid) {
       /* Result result=headlineService.findHeadlineByHid(hid);
        return result;*/
        /**
         * service层中已经完成查询，因此直接返回即可
         * service层中已经封装了mapper层查询，因此直接返回即可
         * 为什么要将mapper层查询封装到service层中？
         *
         * 返回map结果主要是和前端的数据对接，因此返回map结果
         */
        Headline headline = headlineService.getById(hid);
        Map data = new HashMap<>();
        data.put("headline",headline);
        return Result.ok(data);
    }
    @PostMapping("update")
    public Result update(@RequestBody Headline headline) {
        Result result=headlineService.updateData(headline);
        return result;
    }
    /**
     * 删除头条
     * @param
     * @return
     */
    @PostMapping("removeByHid")
    public Result removeByHid(Integer hid) {
        /*Result result=headlineService.removeById(portalVo.getHid());
        return result;*/
        headlineService.removeById(hid);
        return Result.ok(null);
    }
}
